/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package client;

import java.util.ArrayList;
import mail.Message;
import server.MailServer;

/**
 *
 * @author Lab-214-21
 */
public class MailClient {
public String nombreusuario;
public MailServer server;
/**
 * 
 * @param server Servidor donde se conectara el cliente
 * @param nombreusuario  Nombre de usuario que lo identifica de los demas usuarios
 */
    public MailClient(MailServer server,String nombreusuario) {
        this.nombreusuario = nombreusuario;
        this.server= server;
    }
    /**
     * Metodo que devuelve si el usuario esta registrado
     * @return  true |  false
     */
    public boolean existe(){
        return server.existe(this.nombreusuario);
    }
    
    /**
     * 
     * @return devuelve la cantidad de mensajes recibidos
     */
    public int checkmessages(){
        return server.getMessagesWaiting(nombreusuario);
    }
    /**
     * Metodo que me devuelve el primer mensaje encontrado para luego poder leerlo
     * @return retorna el objeto Message 
     */
    public Message readNextMessage(){
        return server.getNextMessage(nombreusuario);
    }
    /**
     * Metodo que devuelve los mensaje Nuevos
     * @return 
     */
    public ArrayList<Message> getMessagesNuevos(){
     return server.getMensajesNuevos(nombreusuario);
    }
    /**
     * Metodo que devuelve los mensaje Leidos
     * @return 
     */
    public ArrayList<Message> getMessagesLeidos(){
     return server.getMensajesLeidos(nombreusuario);
    }
    /**
     * Metodo que devuelve los mensaje eliminados
     * @return 
     */
    public ArrayList<Message> getMessagesEliminados(){
     return server.getMensajesEliminados(nombreusuario);
    }
    /**
     * Metodo que enviar el mail al servidor
     * @param mensaje Objecto Message
     */
   public void sendMessage(Message mensaje){
     server.post(mensaje);
     server.save();
   }
   /**
    * Metodo que notifica al server que hubo cambios y los almacena
    */
   public void notificarcambios(){
    server.save();
   }
   /**
    * Refresca cambios del servidor
    */
   public void refresh(){
    server= server.refresh();
   } 
}
